home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / sun4c.md / idprom.c < prev    next >
C/C++ Source or Header  |  1990-12-19  |  1KB  |  42 lines

  1.  
  2. /*
  3.  * @(#)idprom.c 1.4 88/02/08
  4.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  5.  */
  6.  
  7. #include "idprom.h"
  8.  
  9. /*
  10.  * Read the ID prom and check it.
  11.  * Arguments are a format number and an address to store prom contents at.
  12.  *
  13.  * Result is format number if prom has the right format and good checksum.
  14.  * Result is -1           if prom has the right format and bad checksum.
  15.  * Result is prom's format if prom has the wrong format.
  16.  *
  17.  * If the PROM is in the wrong format, the addressed area is not changed.
  18.  *
  19.  * This routine must know the size, and checksum algorithm, of each format.
  20.  * (Currently there's only one.)
  21.  */
  22.  
  23. int
  24. idprom(format, idp)
  25.     unsigned char format;
  26.     register struct idprom *idp;
  27. {
  28.     unsigned char *cp, sum=0, promform;
  29.     short i;
  30.  
  31.     getidprom(&promform, 1);        /* Get format byte */
  32.     if (format != promform)
  33.         return promform;
  34.     getidprom((unsigned char *)idp, sizeof(*idp));    /* The whole thing */
  35.     cp = (unsigned char *)idp;
  36.     for (i=0; i<16; i++)
  37.         sum ^= *cp++;
  38.     if (sum != 0)
  39.         return -1;
  40.     return promform;
  41. }
  42.